Skip to content

Move round feature enablement - #8155

Open
hardillb wants to merge 29 commits into
mainfrom
new-license-tiers
Open

Move round feature enablement#8155
hardillb wants to merge 29 commits into
mainfrom
new-license-tiers

Conversation

@hardillb

@hardillb hardillb commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

part of FlowFuse/engineering#230

Description

Adds new license tiers and enables features accordingly as laid out in FlowFuse/engineering#230.

The enterprise tier should continue to add all new features so they are covered by tests

Related Issue(s)

FlowFuse/engineering#230

Checklist

  • I have read the contribution guidelines
  • Suitable unit/system level tests have been added and they pass
  • Documentation has been updated
    • Upgrade instructions
    • Configuration details
    • Concepts
  • Changes flowforge.yml?
    • Issue/PR raised on FlowFuse/helm to update ConfigMap Template
    • Issue/PR raised on FlowFuse/CloudProject to update values for Staging/Production
  • Link to Changelog Entry PR, or note why one is not needed.

Labels

  • Includes a DB migration? -> add the area:migration label

@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 39.83740% with 148 lines in your changes missing coverage. Please review.
✅ Project coverage is 76.59%. Comparing base (f20b55b) to head (853e127).

Files with missing lines Patch % Lines
forge/licensing/license-generator-old.js 0.00% 59 Missing ⚠️
forge/licensing/license-generator.js 0.00% 56 Missing ⚠️
forge/ee/routes/index.js 65.95% 16 Missing ⚠️
forge/ee/lib/index.js 77.19% 13 Missing ⚠️
forge/licensing/index.js 63.63% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8155      +/-   ##
==========================================
- Coverage   76.94%   76.59%   -0.35%     
==========================================
  Files         458      459       +1     
  Lines       24418    24541     +123     
  Branches     6495     6525      +30     
==========================================
+ Hits        18788    18798      +10     
- Misses       5630     5743     +113     
Flag Coverage Δ
backend 76.59% <39.83%> (-0.35%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@hardillb
hardillb requested review from Steve-Mcl and knolleary and removed request for Steve-Mcl August 12, 2026 12:43
@hardillb
hardillb marked this pull request as ready for review August 12, 2026 12:43
@hardillb

Copy link
Copy Markdown
Contributor Author

I had to check in a new package-lock.json to get npm ci to run in the , so something is off, but I've merged main and updated package-lock.json to match

@knolleary

Copy link
Copy Markdown
Member

Still need to double check, but with the new product tiers it is possible for a customer to buy a license for both hub and edge to unlock the full feature set. So we need to handle such license types.

I propose we allow the type to be a , separated list of tier types. This will require a slightly different approach for enabling features - a feature in hub & edge shouldn't get enabled twice because the license enables both.

I suggest we have a codified version of the tickbox table that maps feature to tiers (or tiers to features... not such which way around makes the most sense...)

const tierFeature = {
 featureName: { hub: true, edge: true, enterprise: true },
 ...
}

And then a utility function isFeatureEnabledForTier(string) => boolean - which either handles the comma array of tier types, or gets called multiple times and the result aggregated by the caller.

@hardillb

Copy link
Copy Markdown
Contributor Author

Can't that just be the enterprise license that we need to keep to ensure we test everything?

There is also the stuff about maybe including the cert nodes tokens in the license and the new feature listed about access to different BluePrint libraries (that we have not done any planing/design for yet)

Comment thread forge/ee/lib/index.js Outdated
@knolleary

Copy link
Copy Markdown
Member

With the new packaging, we are back to needing to providing separate limits on hosted/remote - the license asks for a combined limit. I'll work on the updates needed for that now.

Co-authored-by: Nick O'Leary <nick.oleary@gmail.com>
@knolleary

Copy link
Copy Markdown
Member

I have pushed some updates:

  1. fixed up the license version checks
  2. added a remoteInstances feature flag (defaults to true, if the license is hub only, gets togged to false)
  3. a number of front-end feature flag checks to disable remote instance UX as needed
  4. centralised the overage check logic - a hub only license will have a limit of 0 remote instances; but we allow overages for licensed platforms. We don't want to allow overage for hub only on remote instances - so added that logic here.

@knolleary knolleary left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having pushed the updates to the UX, I think this is sufficient for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants